package com.xiangge.demo;
/*
    循环关键字：
         break关键字：    掌握
                 使用场景： switch语句 , 循环语句
                 作用： 在循环语句用于结束整个循环语句
                 说明： 一般在实际开发中break在循环中会结合if进行使用
         return关键字：   掌握
                 使用场景： 方法
                 作用：
                      return;    结束方法
                      return 值;  结束方法并返回一个值 - 后面方法讲解
         continue关键字：   了解
                使用场景： 循环语句
                作用： 结束当前这轮循环继续下一轮循环
                说明：当循环体中遇到continue时,会直接跳到条件控制语句: i++; 会导致continue后面的循环体语句不能执行
                     一般可以使用if结构替代continue关键字

        【随堂练习】
            1、使用continue实现输出1到100之间能被5整除的数。
            2、韩信点兵，三人一组余两人，五人一组余三人，七人一组余四人，请问最少需要多少士兵。
            3、[难]输入一个正整数，然后把该正整数转化为二进制。
 */
public class ForDemo5 {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
          /*  if(i % 5 != 0){
                continue;
            }
            System.out.println(i);*/
            if(i % 5 == 0){
                System.out.println(i);
            }
        }
    }
    public static void main3(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if( i % 3 != 0 ){
                System.out.println(i);
            }
        }
    }
    public static void main2(String[] args) {
         /*
          2、韩信点兵，三人一组余两人，五人一组余三人，七人一组余四人，请问最少需要多少士兵。
              分析：
                 1. 数学的思想： 假设最少需要x个士兵,
                             然后计算：
                                 x % 3 = 2;
                                 x % 5 = 3;
                                 x % 7 = 4;
                  取同时满足以上三个条件的最小值
                 2. 先将 n = 1 放到 判断条件： n % 3 == 2 && n % 5 == 3 && n % 7 == 4 判断
                          不满足： n = 2  依次类推
                          满足: 立刻使用break结束循环,打印此时的n就是最少士兵人数
     */
        // 1. 定义一个最少士兵人数的变量n , 初始值为：1
        int n = 1;

/*        // 2. 拿到n的值,然后进行判断的过程是重复的,而且重复执行的次数未知 ： while(true){}
        while (true) {
            // 3. 每次循环拿到n的值进行判断 :  n % 3 == 2 && n % 5 == 3 && n % 7 == 4
            if( n % 3 == 2 && n % 5 == 3 && n % 7 == 4 ){
                break;
            }
            // 4. 如果不符合上面的条件： n 要自增
            n++;
        }*/

        while(!(n % 3 == 2 && n % 5 == 3 && n % 7 == 4 )){
            n++;
        }
        // 当循环结束之后,输出n的值即为最少士兵认识
        System.out.println("最少士兵人数为：" + n); // 最少士兵人数为：53
    }

    public static void main1(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i % 3 == 0) {
                // break;
                return;
            }
            System.out.println(i);
        }
        System.out.println("over");
    }
}
